"ui"
// 智能聊天助手 - AutoX.js项目
// 功能：悬浮按钮触发 → 截图OCR → AI生成回复 → 复制粘贴
// 配置说明：需在config中填入豆包API密钥
// 1. 请求截图权限（适配当前方向）
if (!images.requestScreenCapture()) {
  console.log("请在弹出的窗口中允许截图权限");
  exit();
}else{
  console.log("已获取截图权限");
}
console.log(app.version)

// 2. 测试截图
threads.start(function() {
  let img = images.captureScreen();
  if (img) {
      toast("截图成功");
      img.recycle(); // 释放内存
  } else {
      toast("截图失败");
  }
});
// ===== 配置区 =====
const config = {
  doubaoApiKey: "YOUR_API_KEY", // 替换为豆包API密钥
  floatBtnSize: 60,             // 悬浮按钮大小
  ocrAccuracy: 0.8,             // OCR识别阈值
  replyCount: 3                 // 生成回复数量
};

// ===== 全局变量 =====
let floatWindow = null;       // 悬浮窗实例
let replyWindow = null;       // 回复展示窗
let isListening = false;      // 监听状态

// ===== 工具函数 =====
/**
 * 初始化悬浮按钮
 */
function initFloatButton() {
  // 检查悬浮窗权限
  if (!floaty.checkPermission()) {
    toast("本脚本需要悬浮窗权限来显示悬浮窗，请在随后的界面中允许并重新运行本脚本。");
    floaty.requestPermission();
    exit();
  }

  if (floatWindow) {
    return;
  }


  // 创建悬浮窗XML结构
  floatWindow = floaty.window(
      <vertical>
          <frame id="floatBtn" bg="#2196F380" w="40" h="40" radius="20" gravity="center">
              <text text="AI" color="white" size="14sp" gravity="center"/>
          </frame>
          <vertical id="promptBox" visibility="gone" bg="#FFFFFF80" padding="8" margin="5">
              <text text="点击展开/关闭提示" color="black" size="12sp"/>
          </vertical>
      </vertical>
  );

  // 绑定悬浮按钮点击事件
  // bindFloatButtonEvent();

  // // 事件绑定函数
  // function bindFloatButtonEvent() {
  //     const floatBtn = floatWindow.floatBtn;
  //     const promptBox = floatWindow.promptBox;
      
  //     if (floatBtn && promptBox) {
  //         floatBtn.on("click", () => {
  //             const newVisibility = promptBox.getVisibility() === "gone" ? "visible" : "gone";
  //             ui.run(() => {
  //                 promptBox.setVisibility(newVisibility);
  //             });
  //         });
  //     }
  // }

  // 禁用窗口调整功能，保持界面整洁
  floatWindow.setAdjustEnabled(true);
  // 设置悬浮窗关闭时退出脚本
  floatWindow.exitOnClose();

  // 空定时器保持脚本运行，防止悬浮窗被关闭
  setInterval(()=>{}, 1000);

  // 获取悬浮窗内的frame组件
  let floatBtn = floatWindow.floatBtn;

  // 初始位置
  let x = 50, y = 200;
  floatWindow.setPosition(x, y);

  // 拖动变量
  let lastX, lastY;

  // 触摸事件监听（兼容写法）
  floatBtn.setOnTouchListener(function(view, event) {
      switch(event.getAction()) {
          case event.ACTION_DOWN:
              lastX = event.getRawX();
              lastY = event.getRawY();
              return true;
          case event.ACTION_MOVE:
              floatWindow.setPosition(
                  floatWindow.getX() + (event.getRawX() - lastX),
                  floatWindow.getY() + (event.getRawY() - lastY)
              );
              lastX = event.getRawX();
              lastY = event.getRawY();
              return true;
          case event.ACTION_UP:
              if (event.getEventTime() - event.getDownTime() < 300) {
                  onFloatButtonClick();
              }
              return true;
      }
      return false;
  });
}
/**
 * 悬浮按钮点击事件
 */
function onFloatButtonClick() {
  console.log("onFloatButtonClick");
  if (replyWindow) {
    replyWindow.close();
    replyWindow = null;
    return;
  }

  console.log("正在处理聊天记录...");
  mycaptureScreen().then(imgPath => {
    console.log("正在截屏1...",imgPath);
    return ocrImage(imgPath);
  }).then(chatText => {
    console.log("正在截屏2...",chatText);
    return generateAIReply(chatText);
  }).then(replies => {
    console.log("正在截屏3...",replies);
    showReplyWindow(replies);
  }).catch(err => {
    toast("处理失败: " + err.message);
    console.error(err);
  });
}

/**
 * 截图当前屏幕
 */
function mycaptureScreen() {
 

  console.log("正在截屏...");
  return new Promise((resolve, reject) => {
    let imgPath = files.path("screenshot_" + new Date().getTime() + ".png");
    threads.start(function() {
      try {
        if (images.captureScreen(imgPath)) {
          console.log("截图成功:", imgPath);
          resolve(imgPath);
        } else {
          console.log("截图失败");
          files.remove(imgPath);
          reject(new Error("截图失败，请检查权限"));
        }
      } catch (e) {
        console.error("截图异常:", e);
        files.remove(imgPath);
        reject(e);
      }
    });
  });
}

/**
 * OCR识别图片文字
 * 注：实际使用需集成OCR服务，此处为简化示例
 */
function ocrImage(imgPath) {
  return new Promise((resolve, reject) => {
    // 这里简化处理，实际项目需集成百度OCR或其他服务
    // 示例：提取图片中的文本内容
    setTimeout(() => {
      // 模拟OCR识别结果
      const mockChat = "对方: 你好，最近在忙什么？\n我: 没什么特别的，你呢？\n对方: 我在学习AutoX.js开发";
      resolve(mockChat);
    }, 1500);
  });
}

/**
 * 调用豆包AI生成回复
 */
function generateAIReply(chatHistory) {
  return new Promise((resolve, reject) => {
    if (!config.doubaoApiKey) {
      reject(new Error("请先配置豆包API密钥"));
      return;
    }

    // 构建API请求
    const prompt = `基于以下聊天历史，生成${config.replyCount}个合适的回复，用###分隔：\n${chatHistory}`;

    // 实际项目需替换为真实API调用
    setTimeout(() => {
      // 模拟AI回复
      const mockReplies = [
        "听起来很有趣！AutoX.js能做很多自动化任务呢",
        "我也在学习JavaScript，一起交流呀",
        "AutoX.js开发有遇到什么问题吗？"
      ];
      resolve(mockReplies);
    }, 2000);
  });
}

/**
 * 显示回复窗口
 */
function showReplyWindow(replies) {
  // 1. 创建主窗口（包含所有预定义的按钮）



  let a = 
  replyWindow = floaty.window(
      `<vertical bg="#ffffff" w="300" h="auto" padding="10" radius="8">
          <text text="智能回复" size="16" color="#333333" margin="0 0 10 0"/>

          <vertical id="replyContainer" w="match_parent" h="wrap_content">
              ${
                replies.map((reply, index) => (
                    `<button
                        id="reply_${index}"
                        text="${reply}"
                        w="match_parent"
                        h="wrap_content"
                        bg="#f5f5f5"
                        margin="0 0 8 0"
                        
                    />`
                ))
              }
          </vertical>
          
          <button id="btnClose" text="关闭" w="match_parent" h="40" bg="#f44336" />
      </vertical>`
  );


  // 关闭按钮事件
  replyWindow.btnClose.on("click", () => {
    replyWindow.close();
  });


  // 为每个回复按钮设置点击事件
  replies.forEach((reply, index) => {
    replyWindow[`reply_${index}`].on("click", () => {
        console.log("点击了回复：", reply);
        //setClipboardText(reply);
        //toast("回复已复制");
        replyWindow.close();
    });
});

}
// ===== 主程序 =====
function main() {
  console.log("11111111111111111111");

  // 初始化悬浮按钮
  initFloatButton();
  toast("智能聊天助手已启动");

  // 监听返回键退出
  events.on("back_pressed", function() {
    console.log("back_pressed");
    if (replyWindow) {
      replyWindow.close();
      replyWindow = null;
      return true;
    }
    floatWindow.close();
    engines.myEngine().forceStop();
    return true;
  });
}
console.log("2222222222222");
// 启动主程序
  main();